package com.mvc.controller;

import hbm.AccesosInst;
import hbm.AccesosInstDAO;
import hbm.ClienteDAO;
import hbm.Empleados;
import hbm.EmpleadosDAO;
import hbm.Pedidos;
import hbm.PedidosDAO;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class IngresosController extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public IngresosController() {
		super();
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	@SuppressWarnings("unchecked")
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String opcion = request.getParameter("opcion");

		if (opcion!=null && opcion.equals("validarEmpleado")){
			response.sendRedirect("./jsp/Accesos.jsp");
		}
		
		if (opcion!=null && opcion.equals("validar")){
			String codigoEmpleado = request.getParameter("txtcodigoempleado");
			String claveEmpleado = request.getParameter("txtpasswordempleado");
			String tipoEvento = request.getParameter("tipoEvento");
			List <Empleados> listaEmpleados = new EmpleadosDAO().findAll();
			Iterator itr = listaEmpleados.listIterator();
			while (itr.hasNext()){
				Empleados e = (Empleados)itr.next();
				if ((e.getCodigo().equals(codigoEmpleado))&&(e.getClaveAcceso().equals(claveEmpleado))){
					AccesosInst acceso = new AccesosInst();
					
					
					acceso.setEmpleados(e);
					acceso.setSucursal(e.getSucursal());
					

					if (tipoEvento.equals("0")) {
						acceso.setEvento("INGRESO");
						acceso.setFechaIngreso(new Timestamp(System.currentTimeMillis()));
					}else{
						acceso.setEvento("EGRESO");
						acceso.setFechaSalida(new Timestamp(System.currentTimeMillis()));
					}
					
					Session session = new AccesosInstDAO().getSession();
					try {
						Transaction tx = session.beginTransaction();
						Object findAAgain = session.merge(acceso);
						session.saveOrUpdate(findAAgain);
						tx.commit();
						session.close();
					} catch (HibernateException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					response.sendRedirect("./jsp/listadoAccesos.jsp");
					break;
				}else{
					response.sendRedirect("./jsp/AccesosErr.jsp");
					break;
				}
			}
			
		}
		
		if (opcion != null && opcion.equals("listar")) {
			List <AccesosInst> listaAccesosInst = new AccesosInstDAO().findAll();
			request.getSession().setAttribute("listaAccesosInst", listaAccesosInst);
			response.sendRedirect("./jsp/listadoAccesos.jsp");
		}
	}

}
